Ubuntu16.04 Server + nginx + php-fpmの動作環境を構築する
Ubuntu16.04 Serverにnginxをインストール。php-fpmを使用してphpが動作する環境を作成してみます。
Debian版の過去記事を参考にしました。
Debian 7 + nginx + php-fpmな環境を構築する
php-fpmのインストール
aptでphp-fpmをインストールしました。
$ sudo apt install php7.0-fpm
php-fpmの設定ファイルは
「/etc/php/7.0/fpm/php-fpm.conf」
phpの設定ファイルは
「/etc/php/7.0/fpm/php.ini」
にそれぞれ作成されます。
動作モードを確認するため、php-fpmの設定ファイルを確認します。
$ vi /etc/php/7.0/fpm/php-fpm.conf
ファイルの末尾付近
;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;
; Multiple pools of child processes may be started with different listening
; ports and different management options. The name of the pool will be
; used in logs and stats. There is no limitation on the number of pools which
; FPM can handle. Your system will tell you anyway :)
; Include one or more files. If glob(3) exists, it is used to include a bunch of
; files from a glob(3) pattern. This directive can be used everywhere in the
; file.
; Relative path can also be used. They will be prefixed by:
; - the global prefix if it's been set (-p argument)
; - /usr otherwise
include=/etc/php/7.0/fpm/pool.d/*.conf
/etc/php/7.0/fpm/pool.d/にある設定ファイルを読み込んでいます。
このディレクトリにはwww.confがあるので、この中身を見てみます。
$ vi /etc/php/7.0/fpm/pool.d/www.conf
listenの項目を探します。
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = www-data
group = www-data
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
; a specific port;
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
; a specific port;
; 'port' - to listen on a TCP socket to all addresses
; (IPv6 and IPv4-mapped) on a specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = /run/php/php7.0-fpm.sock
ユーザーは「www-data」で動作。
unix-socket「/run/php/php7.0-fpm.sock」をリッスンしていることがわかりました。
nginxからは、このソケットにリクエストを転送するよう指定します。
php-fpmの起動と自動起動設定
systemctlでOS起動時にサービスが開始されるか確認してみます。
$ systemctl list-unit-files --type=service | grep php
php7.0-fpm.service enabled
インストール時に自動起動が有効になっていますね。
/run/phpにpidファイルとsocketファイルが作成されていました。
$ ls /run/php | grep php
php7.0-fpm.pid
php7.0-fpm.sock
nginxのインストール
引き続き、aptでnginxのインストールを行います。
$ sudo apt install nginx
インストール後、サービスの状態を確認。
$ systemctl list-unit-files --type=service | grep nginx
nginx.service enabled
php-fpm同様、nginxも自動起動が有効になっています。
インストール後、ブラウザでhttp://[サーバーIP]/を表示してみると、こんなページが表示されるはずです。

nginxの設定
拡張子phpのリクエストがきたら、php-fpmにリクエストを転送するよう設定します。
編集する設定ファイルは「/etc/nginx/sites-enabled/default」
$ sudo vi /etc/nginx/sites-enabled/default
50行目付近にphp設定のサンプルがコメントアウトされた状態で記載されています。
socketを使用する箇所のコメントを解除し、有効にします。
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php7.0-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
編集が終わったらnginxを再起動。
$ sudo service nginx restart
wwwのルートはデフォルトで「/var/www/html」となっています。
/var/www/html/info.phpを作成
$ sudo vi /var/www/html/info.php
phpinfoを表示してみます。
- <?php phpinfo(); ?>
ブラウザでhttp://[サーバーIP]/info.phpを表示。

ちゃんとphpが動いてくれていますね。
- 関連記事
-
- Ubuntu 18.04にChromeをインストールする
- GraalVMをUbuntu Server 16.04にインストールする
- Ubuntu16.04 Server + nginx + php-fpmの動作環境を構築する
- NGINX unit 設定値の編集方法(Configuration)
- curl --unix-socketで「curl: (7) Couldn't connect to server」
コメント